package com.example.ai.entity;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 用户信息数据传输对象
 * 用于封装系统用户的基础信息和业务状态
 *
 * @author czwa
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class User {
    /**
     * 用户唯一标识
     * 对应数据库自增主键
     */
    private int id;

    /**
     * 用户名
     * 用于登录和显示的用户名称
     */
    private String userName;

    /**
     * 用户密码
     * 加密存储的登录密码
     */
    private String password;

    /**
     * 用户性别
     * 0-未知 1-男 2-女
     */
    private Integer gender;

    /**
     * 用户手机号
     * 用于登录和接收通知的手机号码
     */
    private String phone;

    /**
     * 用户头像URL
     * 指向用户头像图片的存储地址
     */
    private String image;

    /**
     * 创建时间
     * 记录用户创建的时间戳
     */
    private LocalDateTime createTime;

    /**
     * 创建者ID
     * 记录创建此用户的操作员ID
     */
    private Long creator;

    /**
     * 更新时间
     * 记录用户信息最后更新的时间戳
     */
    private LocalDateTime updateTime;

    /**
     * 更新者ID
     * 记录最后修改此用户信息的操作员ID
     */
    private Long updater;

    /**
     * 用户余额
     * 单位：元，用户账户余额
     */
    private double balance;

    /**
     * 分页页码
     * 查询时的分页页码，默认值为1
     */
    private int page;

    /**
     * 分页大小
     * 查询时的每页记录数，默认值为10
     */
    private int pageSize;

    /**
     * 用户状态
     * 0-禁用 1-启用 2-锁定
     */
    private int status;
}